package com.googlecode.zohhak.internal.junit; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.*; import org.junit.Test; import org.junit.runner.Description; import org.junit.runner.manipulation.Filter; import com.googlecode.zohhak.internal.junit.OrParentFilter; public class OrParentFilterTest { //comes from IDE. parameters to shouldRun comes from methods' descriptions Filter filter = mock(Filter.class); OrParentFilter orParentFilter = OrParentFilter.decorate(filter); @Test public void factoryTest() { OrParentFilter decorated1 = OrParentFilter.decorate(filter); OrParentFilter decorated2 = OrParentFilter.decorate(filter); assertThat(decorated1).isNotSameAs(decorated2); } @Test public void filteringTest() { // given Description parent = Description.createSuiteDescription("method(class)"); Description child = Description.createSuiteDescription("method [2](class)"); // when when(filter.shouldRun(parent)).thenReturn(true); when(filter.shouldRun(child)).thenReturn(false); // then assertThat(orParentFilter.shouldRun(parent)).isTrue(); assertThat(orParentFilter.shouldRun(child)).isTrue(); } @Test public void describe() { when(filter.describe()).thenReturn("all tests"); assertThat(orParentFilter.describe()).startsWith("all tests ").contains(" with").contains(" without").contains(" parameters"); } }